/*
Copyright (C) 2008 raohmaru <http://www.raohmaru.com>

This file is part of Raohmaru AS3 Framework.

Raohmaru AS3 Framework is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Raohmaru AS3 Framework is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with Raohmaru AS3 Framework.  If not, see <http://www.gnu.org/licenses/>.
*/

package jp.raohmaru.media.filters
{
import flash.media.Sound;
import flash.utils.ByteArray;

/**
 * Define la interfaz de programación de aplicaciones (API) que implementan las clases que definen filtros de sonido
 * utilizados en el objeto SoundFX.
 * @author raohmaru
 * @version 1.0
 * @see jp.raohmaru.media.SoundFX#filters
 */
public interface IFilter
{
	/**
	 * Aplica un filtro procesando las muestras de sonido del objeto de sonido y volcando el resultado en el objeto
	 * de flujo dinámico <code>sample</code>.
	 * Éste método se invoca cada vez que se distribuye un evento <code>flash.events.SampleDataEvent</code> solicitando
	 * nuevas muestras de sonido.
	 * @param source Objeto Sound de origen del que se extraen muestras de sonido para ser procesadas por el filtro.
	 * @param sample Los datos del flujo dinámico de audio para la reproducción.
	 */
	function apply(source :Sound, sample :ByteArray) :int;
	/**
	 * Reinicia la posición (expresada en bytes) del puntero para la lectura de muestras de sonido.
	 * @param position Nueva posición para el puntero.
	 */
	function reset(position: Number=0.0) :void;
}
}